/**
 * Created by ybf on 2017/8/4.
 */
/*var loginInfo = {
    'sdkAppID': 1400036848, //用户所属应用id,必填
    'appIDAt3rd': 1400036848, //用户所属应用id，必填
    'accountType': 14478, //用户所属应用帐号类型，必填
    'identifier': 'ybf', //当前用户ID，需要开发者填写
    'identifierNick': 'ybf', //当前用户昵称，选填
    'userSig': 'eJxlj0FPgzAAhe-8iobrjGkpNcwbG4YhIAExChcCtIVmjjWsGMH433VsiSS*6-e9vLwvDQCgp8HzbVnXx6FThRol08E90KF*8welFLQoVYF7*g*yTyl6VpRcsX6GiBBiQLh0BGWdElxcjbHiC3ii*2JeuLTN3yq*s0xrqYhmhuFDtvXi7WO64gl7aSO1D5xuSG1-PZaxu2sGF**ije8g0gS2tznUjdfaT2G4ynORJR6OIzdoK5lPnGa1O2FevUbv-psxhaZjJnW6mFTiwK53ILLMNSLGgn6w-iSO3SwYEBFkYHiOrn1rP-S4W9s_', //当前用户身份凭证，需要开发者填写
    'headurl': ''//当前用户默认头像，选填
};*/

var loginInfo = {
    'sdkAppID': 1400037300, //用户所属应用id,必填
    'appIDAt3rd': 1400037300, //用户所属应用id，必填
    'accountType': 14637, //用户所属应用帐号类型，必填
    'identifier': 'shop_1', //当前用户ID，需要开发者填写
    'identifierNick': 'shop_1', //当前用户昵称，选填
    'userSig': 'eJxNkEtvwjAQhP9LrqmoH9h9SBwigyAFVEUJKOJiucROXUTi*lGKqv53kgiqHne*nRnt-kTFKh*56sCFMbqKniM4BgDgBwxAdDdA*W20lVwoL23PCSEI-NHBxoXn2Pbum*z1UQ7LACE6xo-wqutKNl4rPUS599bwGxH7fRsaz-3ZyH9BTtfdtJ5lLJ3er*N07nNRUlKhfBNIECdVJ5stw*okXs7bOOhFsHF5THRS*JVC6a593VFcLN6gEp8lY-P0YKhaoicK3UeSsXrJZtlkci37ktbptukKEYAEou4J-aW-F7uOVtQ_', //当前用户身份凭证，需要开发者填写
    'headurl': ''//当前用户默认头像，选填
};

//监听事件
var listeners = {
    "onConnNotify": onConnNotify, //监听连接状态回调变化事件,必填
    "jsonpCallback": jsonpCallback, //IE9(含)以下浏览器用到的jsonp回调函数，
    "onMsgNotify": onMsgNotify, //监听新消息(私聊，普通群(非直播聊天室)消息，全员推送消息)事件，必填
    //"onBigGroupMsgNotify": onBigGroupMsgNotify, //监听新消息(直播聊天室)事件，直播场景下必填
    //"onGroupSystemNotifys": onGroupSystemNotifys, //监听（多终端同步）群系统消息事件，如果不需要监听，可不填
    //"onGroupInfoChangeNotify": onGroupInfoChangeNotify, //监听群资料变化事件，选填
    "onFriendSystemNotifys": onFriendSystemNotifys, //监听好友系统通知事件，选填
    "onProfileSystemNotifys": onProfileSystemNotifys, //监听资料系统（自己或好友）通知事件，选填
    "onKickedEventCall": onKickedEventCall, //被其他登录实例踢下线
    "onC2cEventNotifys": onC2cEventNotifys //监听C2C系统消息通道
};

//监听连接状态回调变化事件
var onConnNotify = function (resp) {
    var info;
    switch (resp.ErrorCode) {
        case webim.CONNECTION_STATUS.ON:
            webim.Log.warn('建立连接成功: ' + resp.ErrorInfo);
            break;
        case webim.CONNECTION_STATUS.OFF:
            info = '连接已断开，无法收到新消息，请检查下你的网络是否正常: ' + resp.ErrorInfo;
            alert(info);
            webim.Log.warn(info);
            break;
        case webim.CONNECTION_STATUS.RECONNECT:
            info = '连接状态恢复正常: ' + resp.ErrorInfo;
            alert(info);
            webim.Log.warn(info);
            break;
        default:
            webim.Log.error('未知连接状态: =' + resp.ErrorInfo);
            break;
    }
};

//IE9(含)以下浏览器用到的jsonp回调函数
function jsonpCallback(rspData) {
//设置jsonp返回的
    webim.setJsonpLastRspData(rspData);
}

//监听新消息事件
//newMsgList 为新消息数组，结构为[Msg]
function onMsgNotify(newMsgList) {
    //im_controller.im_get_msg(newMsgList);
    //console.warn(newMsgList);
    var sess, newMsg;
    //获取所有聊天会话
    var sessMap = webim.MsgStore.sessMap();
    webim.syncMsgs(initUnreadMsgCount);//初始化最近会话的消息未读数
    for (var j in newMsgList) {//遍历新消息
        newMsg = newMsgList[j];
        addMsg(newMsg);
        //console.log(newMsg.getSession());
        /*document.writeln('type:' + newMsg.getSession().type() + '<br>');
        document.writeln('id:' + newMsg.getSession().id() + '<br>');
        document.writeln('name:' + newMsg.getSession().name() + '<br>');
        document.writeln('unread:' + newMsg.getSession().unread() + '<br>');
        document.writeln('msgCount:' + newMsg.getSession().msgCount() + '<br>');*/
        //document.write(newMsg.getFromAccountNick() + ' : ' + newMsg.getElems()[0].getContent().getText()+'<br>');
        /*if (newMsg.getSession().id() == selToID) {//为当前聊天对象的消息
            selSess = newMsg.getSession();
            //在聊天窗体中新增一条消息
            //console.warn(newMsg);
            addMsg(newMsg);
        }*/
    }
    //消息已读上报，以及设置会话自动已读标记
    /*selSess = newMsg.getSession();
    webim.setAutoRead(selSess, true, true);*/

    /*for (var i in sessMap) {
        sess = sessMap[i];
        if (selToID != sess.id()) {//更新其他聊天对象的未读消息数
            updateSessDiv(sess.type(), sess.id(), sess.unread());
        }
    }*/
}

//监听（多终端同步）群系统消息方法，方法都定义在receive_group_system_msg.js文件中
//注意每个数字代表的含义，比如，
//1表示监听申请加群消息，2表示监听申请加群被同意消息，3表示监听申请加群被拒绝消息
var groupSystemNotifys = {
    /*"1": onApplyJoinGroupRequestNotify, //申请加群请求（只有管理员会收到）
    "2": onApplyJoinGroupAcceptNotify, //申请加群被同意（只有申请人能够收到）
    "3": onApplyJoinGroupRefuseNotify, //申请加群被拒绝（只有申请人能够收到）
    "4": onKickedGroupNotify, //被管理员踢出群(只有被踢者接收到)
    "5": onDestoryGroupNotify, //群被解散(全员接收)
    "6": onCreateGroupNotify, //创建群(创建者接收)
    "7": onInvitedJoinGroupNotify, //邀请加群(被邀请者接收)
    "8": onQuitGroupNotify, //主动退群(主动退出者接收)
    "9": onSetedGroupAdminNotify, //设置管理员(被设置者接收)
    "10": onCanceledGroupAdminNotify, //取消管理员(被取消者接收)
    "11": onRevokeGroupNotify, //群已被回收(全员接收)
    "255": onCustomGroupNotify//用户自定义通知(默认全员接收)*/
};

//监听好友系统通知函数对象，方法都定义在receive_friend_system_msg.js文件中
var onFriendSystemNotifys = {
    /*"1": onFriendAddNotify, //好友表增加
    "2": onFriendDeleteNotify, //好友表删除
    "3": onPendencyAddNotify, //未决增加
    "4": onPendencyDeleteNotify, //未决删除
    "5": onBlackListAddNotify, //黑名单增加
    "6": onBlackListDeleteNotify//黑名单删除*/
};

//监听资料系统通知函数对象，方法都定义在receive_profile_system_msg.js文件中
var onProfileSystemNotifys = {
    //"1": onProfileModifyNotify//资料修改
};

//监听C2C消息通道的处理，方法在receive_new_msg.js文件中
var onC2cEventNotifys = {
    //"92": onMsgReadedNotify,//消息已读通知
};

//监听 群资料变化 群提示消息
function onGroupInfoChangeNotify(groupInfo) {
    webim.Log.warn("执行 群资料变化 回调： " + JSON.stringify(groupInfo));
    var groupId = groupInfo.GroupId;
    var newFaceUrl = groupInfo.GroupFaceUrl;//新群组图标, 为空，则表示没有变化
    var newName = groupInfo.GroupName;//新群名称, 为空，则表示没有变化
    var newOwner = groupInfo.OwnerAccount;//新的群主id, 为空，则表示没有变化
    var newNotification = groupInfo.GroupNotification;//新的群公告, 为空，则表示没有变化
    var newIntroduction = groupInfo.GroupIntroduction;//新的群简介, 为空，则表示没有变化

    if (newName) {
        //更新群组列表的群名称
        //To do
        webim.Log.warn("群id=" + groupId + "的新名称为：" + newName);
    }
}

var onKickedEventCall =function (req) {
    //console.log(req);
};

var options = {
    isLogOn: false
};

//sdk登录
function webimLogin() {
    webim.login(
        loginInfo, listeners, options,
        function (resp) {
            loginInfo.identifierNick = resp.identifierNick;//设置当前用户昵称
            view_controller();
            get_user_list();
            //initDemoApp();
        },
        function (err) {
            alert(err.ErrorInfo);
        }
    );
}

